a. Field of the Invention
The present invention generally pertains to storage systems and more particularly to Redundant Array of Independent Disks (RAID) data storage systems.
b. Description of the Background
A Redundant Array of Independent Disks (RAID) data storage system is a method of using multiple physical hard drives to act as a single logical hard drive for interaction with a host computer. Each Physical Drive (PD) has a partition dedicated to the RAID Logical Drive (LD). The use of partitions on multiple physical drives is referred to as striping. The logical drive acts as a logical abstraction and allows the physical drives to interact with the host computer as a single data storage drive. Since it is possible to partition each physical drive into multiple partitions, it is possible to create multiple RAID logical drives using the same physical drives. While most of the advantages of a RAID system are lost, it is possible to create some types of RAID systems using a single physical drive. RAID controller software provides the abstraction interface to allow the RAID system to appear as an abstracted logical drive to the computer Operating System (OS). The RAID controller software may be implemented as a software driver running under the computer operating system, sometimes called a software RAID controller, or as a firmware controller running on a separate piece of hardware, sometimes called a hardware RAID controller. The software RAID controller is written in the form of a device driver for the computer operating system.
A RAID storage system has two primary advantages versus a single physical drive storage system, i.e., data redundancy and higher speed data communication Input/Output (I/O). A RAID system allows for data redundancy by duplicating data stored on a single physical drive onto at least two physical drives within the RAID storage system. The data redundancy feature insures against data loss and subsequent system failure if one of the physical drives fails. Higher speed data I/O is achieved by parallel communication with multiple physical drives for sending and receiving data that would typically be written to a single physical drive and would typically be limited to the physical I/O speed of the single physical drive. Data redundancy and higher speed I/O act in opposition to each other within a RAID storage system. That is, the more the system is optimized for data redundancy the slower the I/O speed, and the higher the I/O speed the lower the data redundancy. Hence, there are a variety of RAID types that vary the data redundancy and I/O tradeoffs in an assortment of schemes in order to optimize the RAID performance to achieve end user goals.
A RAID system that optimizes purely for speed, with no data redundancy, is referred to as a RAID-0 system. A RAID system that optimizes purely for redundancy, with no effort to achieve higher I/O speed, is referred to as a RAID-1 system. Other RAID types fall somewhere in the middle between a RAID-0 and a RAID-1 system, with a variety of efforts to maximize both the data redundancy and the higher speed I/O features of a RAID system. The selection of a RAID type is often dependant on the type of data that is intended to be stored on the RAID storage system. The type of data stored may vary by file size, whether the file is read or written more often, as well as other data file attributes.
Each non-redundant physical drive within the RAID system is counted as a stripe. Therefore, the number of stripes is equal to the number of non-redundant physical drives within a RAID system. The size of the partition on each physical drive is referred to as the stripe size. For a RAID-0 system, with no redundancy, the number of stripes is equal to the number physical drives in the RAID system. For a RAID-1 system, often referred to as a mirroring system, there are two redundant physical drives storing the same, or mirroring, the data. In the RAID-1 system, there is only one non-redundant physical drive, and hence, there is only one stripe for the system. Consequently, a RAID-1 system is often referred to as a non-striping RAID system. When multiple RAID logical drives use the same physical drives, each RAID logical drive may be a different RAID type. Hence, each RAID logical drive using the same physical drives may have a different stripe size and a different number of stripes.
A RAID system may use virtually any type of physical drive as the physical drives within the RAID system. There are two primary families of physical drive types. There are drives that follow the Integrated Drive Electronics/Advanced Technology Attachment (IDE/ATA) family of standards, and there are physical drives that follow the Small Computer System Interface (SCSI) family of standards. Each standard family has multiple generations, or revisions, of the standard specifying various aspects of the physical drive communication interface. New revisions of the standards reflect technology advancements and generally allow greater I/O capabilities for physical drives supporting the updated standard revision. Information on the IDE/ATA and SCSI standards is kept by the American National Standards Institute (ANSI). ANSI is located at 11 West 42nd Street, 13th Floor, New York, N.Y. 10036, telephone number 212-642-4900, and web site www.ansi.org.
Generally, RAID systems are created using physical drives that support the same standard family and revision. By using physical drives supporting the same standard family and revision, the RAID system operates all physical drives with the same I/O characteristics. One such I/O characteristic is the maximum request size of the RAID logical drive. The maximum request size controls the maximum amount of data that the computer Operating System (OS) may transfer to or from the logical drive in a single data transfer transaction. In order to support all varieties of physical drives, the RAID controller software typically sets the overall RAID logical drive characteristics, including the maximum request size, to match the characteristics of the oldest physical drive standard family revision that may be included in the RAID system.